
//设计一个算法，求一个数组中最大的k个数
class Solutio1 {
    public int[] smallestK(int[] arr, int k) {
            int[] ret=new int[k];
            if(arr==null||k==0){
                return ret;
            }
            //建立小根堆
            Queue<Integer>  minHeap=new PriorityQueue<>();
            //遍历前k个数，放到堆中
            for(int i=0;i<k;i++){
                minHeap.offer(arr[i]);
            }
            for(int i=k;i<arr.length;i++){
               int val=minHeap.peek();
                if(val<arr[i]){
                    minHeap.poll();
                    minHeap.offer(arr[i]);
                }
                
            
            }
            for(int i=0;i<k;i++){
                ret[i]=minHeap.poll();
            }
            return ret;
    }
}